#pragma once

#include "command/IMacroCommand.h"
#include "command/Command.h"

class MacroCommand : public Command, public IMacroCommand
{
	typedef std::vector<ICommand*> CommandSequence;
public:
	BEGIN_DEFINE_CLASS(CLSID_MacroCommand)
		USE_INTERFACE_ENTRY(Command)
		DEFINE_INTERFACE_ENTRY(IMacroCommand)
	END_DEFINE_CLASS()

	MacroCommand();
	virtual ~MacroCommand();

	virtual void Execute();

	virtual void AddCommand(ICommand* command);
	virtual uint32 GetCommandCount() const;
	virtual ICommand* GetCommand(uint32 index) const;

private:
	CommandSequence m_commands;
};

AUTO_REGISTER_CLASSMAP_ENTRY(MacroCommand)